我們來到了串流加密法~
我們這一章也資訊也不多,主要是目前串流加密不是很主流之外,跟上一回講的一樣。
串流加密除了要跟演算法綁在一起之外,另一個就是安全性問題了。
但我們還是必需要來介紹一下,讓我們來聊聊串流加密吧~
直接由我比較熟悉的RC4來作整個的代表。
其實整個RC4算是蠻簡單的。
主要是由金鑰和S盒子不斷的打亂生成出1位元的擴充金鑰來跟數據做XOR加密。
並且整個只要金鑰相同就能生成同樣的擴充金鑰。
兩個步驟而已:
一開始會先生成一個初始化的S盒子,從0-255。
我會拿Python來做範例:
S = list(range(255))
再來就是依據Key來打亂S盒子內部的排序:
j = 0
for i in range(255):
j = (j + S[i] + Key[i % (len(Key)-1)]) % 255
S[i],S[j] = S[j],S[i]
其實就是把『j』跟『S[i]的內容』跟『Key相對位子的內容』做累加後取255餘數。
S盒子都初始化好了之後就是不斷生成擴充金鑰。
接下來就是繼續不斷的打亂盒子,並生成1位元與資料作XOR。
i = 0
j = 0
CipherData = []
for _ in range(len(data)):
i = (i + 1) % 255
j = (j + S[i]) % 255
S[i],S[j] = S[j],S[i]
CipherData.append(Data ^ S[(S[i]+S[j])%255])
圖一可以看一下大約:
圖一
圖片來自RC4 Wiki EN。
差不多就是這樣……
其實怎麼說跟其他AES之類的加密感覺簡單很多,但RC家族一貫的都是簡單。
這其實跟輪加密很像就是了,而RC4之前也為TLS、WPE等使用過。
但後來在2015年時候能將在75小時內破解。
所以目前也不是安全的加密法。
我提供一些資訊好了:Prohibiting RC4 Cipher Suites
說起來是串流加密,能不將資料分塊的原因就是利用不斷生成擴充金鑰並且跟資料作XOR。
其實很多金鑰擴充都能做到,但安全性就是另一件事情了。
那個交給其他資諳大神來解釋。
大概大家能從RC4窺探串流加密的一些方法,也能發現就是類似於OTP的加密方案。
將資料做XOR,而且不斷打亂XOR的金鑰,讓其找不到規則。
因為能不斷生成XOR的金鑰,因此不需要將資料分隔,資料有多少生成多少擴充金鑰。
當然目前除了不主流之外,安全性都有一定的疑慮。
那接下來介紹的區塊交密才是比較重要的。
那大家明天見拉~